package org.box.metadata.shell.message;

import org.box.metadata.cli.annotation.Command;

/**
 * Describes API for message formating outgoing messages from Shell.
 * 
 * @author <a href="mailto:alexander.box@gmail.com">Alexander Korobka</a>
 *
 */
public interface MessageFormatter {

	/**
	 * A unique identifier of the formatter.
	 * 
	 * @return a identifier as a string
	 */
	String getId();
	
	/**
	 * Formatter the given parameters from Shell to a string 
	 * 
	 * @param command - the message producer application
	 * @param cfgClasses TODO
	 * @param args - a list of addition arguments such as an exception etc.
	 * 
	 * @return a message as a string
	 */
	@SuppressWarnings("rawtypes")
	String format(Command command, Class[] cfgClasses, Object... args);
	
}
